package interfaces;

import javax.swing.JPanel;


/**
 * Cette interface contient les fonctions basiques communs entres tous les types de plugins
 * Il est necessaire que d'autres interfaces qui specifient le comportement des plugins en herite   
 * @author Amine HALLILI amine.hallili@gmail.com
 *
 */
public interface IPlugin {
	
	//public boolean parDefaut =false;
	
	/**
     * Cette fonction permet de récupérer la fenêtre qui affiche les informations basiques sur le plugin
     * @return Jpanel
     */
    JPanel getFrameDetail();
    
    
    /**
     *  Cette fonction retourne le suffixe du plugin
     * @return String
     */
    String[] getExtension();
    
	
	 /**
     * Cette fonction renvoie la version du plugin
     * @return String
     */
    String getVersion();
    
    
    /**
     * Indique si le plugin est le plugin par defaut ou non
     * chaque classe implementant cette interface doit contenir une variable "parDefaut"
     * "parDefaut" sera renvoyé par cette methode pour indiquer le statut du plugin
     * @return true si ce plugin est le plugin par defaut ou false sinon
     */
    boolean isDefault();
    
    
    /**
     * Change l'etat du plugin en par defaut ou non
     * @param bool boolean nouveau etat du plugin 
     */
    void setDefault(boolean bool);

}
